#ifndef COLLIDER_H_INCLUDED
#define COLLIDER_H_INCLUDED

#include <list>
#include "uncopyable.h"

class Entity;

enum ColliderType {
	SPHERE,
	AABB
};

class Collider : private Uncopyable {
public:
    Collider(Entity* entity, ColliderType type=SPHERE, float width=0, float height=0, float depth=0);

    virtual float getRadius() const = 0;
    virtual void setRadius(const float radius) = 0;
	void setSize(float width, float height, float depth);
    static void updateColliders(std::list<Collider*> &colliders);



    Entity* getEntity() const { return m_entity; }
	ColliderType getType() { return m_type; }
    virtual ~Collider() { m_entity = NULL; }
	ColliderType m_type;
private:
    virtual bool collideWith(const Collider* collider) = 0;
	
    Entity* m_entity;

//	float m_width;
//	float m_height;
//	float m_depth;
};

#endif // COLLIDER_H_INCLUDED
